Object.setPrototypeOf()

您所在的位置:网站首页 js object增加属性 Object.setPrototypeOf()

Object.setPrototypeOf()

2024-02-01 11:05| 来源: 网络整理| 查看: 265

通常,作为正确的方式,应该使用 Object.setPrototypeOf() 方法来设置对象的原型。因为 Object.prototype.__proto__ 访问器已被弃用。

如果 obj 参数不是对象(例如数字、字符串等),则该方法不执行任何操作——无需将其强制转换为对象或尝试设置其原型——直接将 obj 作为原始值返回。如果 prototype 的值与 obj 的原型相同,则直接返回 obj,即使 obj 具有不可变的原型,也不会抛出 TypeError 错误。

出于安全考虑,某些内置对象的原型被设计为是不可变的。这可以防止原型污染攻击,尤其是与代理有关的攻击。核心语言仅指定 Object.prototype 是不可变原型的特异对象,其原型始终为 null。而在浏览器中,window 和 location 也是(常见的)不可变原型的特异对象。

jsObject.isExtensible(Object.prototype); // true;你可以添加更多属性 Object.setPrototypeOf(Object.prototype, {}); // TypeError: Immutable prototype object '#' cannot have their prototype set Object.setPrototypeOf(Object.prototype, null); // 没有错误;`Object.prototype` 的原型已经是 `null`


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3